'''
给定一个 m x n 的矩阵，如果一个元素为 0 ，则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

进阶：

一个直观的解决方案是使用  O(mn) 的额外空间，但这并不是一个好的解决方案。
一个简单的改进方案是使用 O(m + n) 的额外空间，但这仍然不是最好的解决方案。
你能想出一个仅使用常量空间的解决方案吗？
 

示例 1：


输入：matrix = [[1,1,1],[1,0,1],[1,1,1]]
输出：[[1,0,1],[0,0,0],[1,0,1]]

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/set-matrix-zeroes
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
'''
class Solution(object):
    def setZeroes(self, matrix):
        """
        :type matrix: List[List[int]]
        :rtype: None Do not return anything, modify matrix in-place instead.
        """
        def set_zero(loc):
            '''
            :param loc: 0元素所在位置：   行：loc[0] 列：loc[1]
            :return:
            '''
            matrix[loc[0]][:] = [0]*len(matrix[loc[0]][:])
            for i in range(len(matrix)):
                matrix[i][loc[1]] = 0
        locs = []
        for i in range(len(matrix)):
            for j in range(len(matrix[0])):
                if matrix[i][j] == 0:
                 locs.append([i,j])
        for loc in locs:
            set_zero(loc)

matrix = [[1,2,1],[1,0,1],[1,2,1]]
Solution().setZeroes(matrix)